{$M+}
unit AbstractController;

interface

  uses
    Classes;

  type
    TController = class
      private
        //Concrete
        //function GetCurrent() : Cardinal;
        //Virtual
      protected
        function GetCurrent() : Cardinal; virtual; abstract;
        function GetMax() : Cardinal; virtual; abstract;
        function GetRunning() : Boolean; virtual; abstract;
        function GetFinished() : Boolean; virtual; abstract;
        function GetError() : Boolean; virtual; abstract;
      published
        procedure Toggle(); virtual; abstract;
        procedure Cancel(); virtual; abstract;
        property Current : Cardinal read GetCurrent;
        property Max : Cardinal read GetMax;
        property Running : Boolean read GetRunning;
        property Finished : Boolean read GetFinished;
        property Error : Boolean read GetError;
        //constructor Create(Path : Widestring); virtual; abstract;
    end;

implementation

end.
